package com.base.core.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public final class VerifyUtils
{
	/**
	 * 判断身份证号码是否正确
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isIdCard(String str)
	{
		return isMatch(str, "(^\\d{15}$|^\\d{18}$|^\\d{17}(\\d|X|x))");
	}
	
	
	public static  boolean isMatch(String str,String regex)
	{
		if(StringUtils.isEmpty(str) || StringUtils.isEmpty(regex))
		{
			return false;
		}
		
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(str.trim());
		return m.matches();
	}

	/**
	 * 判断手机号码是否正确
	 * 
	 * @param str
	 * @return
	 */
	public static  boolean isMobile(String str)
	{
		return isMatch(str, "(1(([35][0-9])|(47)|[8][01236789]))\\d{8}");
	}
	/**
	 * 办公电话
	 * 
	 * @param str
	 * @return
	 */
	public static  boolean isPhone(String str)
	{
		return isMatch(str, "\\(0\\d{2,3}\\)\\d{7,8}|(0\\d{2,3}[-]?)\\d{7,8}");
	}

	/**
	 * 计算英文字母的长度
	 * 
	 * @param str
	 * @return
	 */
	public static  int enStrLength(String str)
	{
		return strLength(str, null, null, false);
	}

	/**
	 * 获得字符串的长度
	 * 
	 * @param str
	 * @return
	 */
	public static  int strLength(String str, String regex, String repaceChar, boolean hasSpaceLen)
	{
		if (StringUtils.isBlank(str))
		{
			return 0;
		}
		if (StringUtils.isEmpty(str) && hasSpaceLen)
		{
			return 0;
		}
		String result = hasSpaceLen ? str : str.trim();
		if (!StringUtils.isEmpty(regex))
		{
			result = result.replace(regex.trim(), repaceChar);
		}

		return result.length();
	}
}
